package com.triones.api.service;

import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.page.TableDataInfo;
import com.triones.api.entity.ApplyVipRecordDO;
import com.triones.api.entity.CryptoInCommonUseAddressDO;
import com.triones.api.entity.KickbackExtractDO;
import com.triones.api.entity.MemberDO;
import com.triones.api.entity.bo.UpdatePwdBO;
import com.triones.api.entity.param.*;
import com.triones.api.entity.vo.*;

import java.util.List;

/**
 * 用户 -接口
 */
public interface MemberService {

    /**
     * 用户列表（分页）
     * @param memberParams
     * @param pageQuery
     * @return
     */
    TableDataInfo<CustomMemberVO> pageList(MemberParams memberParams, PageQuery pageQuery);

    /**
     * 用户详情
     * @param uid
     * @return
     */
    CustomMemberVO getDetail(Long uid);

    /**
     * 检查是否具备VIP申请
     * @return
     */
    Boolean checkHaveApplyVip();

    /**
     * 申请成为vip
     * @return
     */
    boolean apiApplyVip();

    /**
     * 设置vip用户
     * @param dto
     * @return
     */
    boolean sysSetVip(MemberDO dto);

    /**
     * 审核vip申请
     * @param dto
     * @return
     */
    boolean auditVipApply(ApplyVipRecordDO dto);

    /**
     * vip申请列表（分页）
     * @param applyVipRecordParams
     * @param pageQuery
     * @return
     */
    TableDataInfo<CustomApplyVipRecordVO> vipApplyPageList(ApplyVipRecordParams applyVipRecordParams, PageQuery pageQuery);

    /**
     * 推广中心钱包信息含用户信息
     * @return
     */
    CustomPublicizeMemberWalletVO publicizeWalletInfo();

    /**
     * 邀请用户列表
     * @param inviteMemberParams
     * @param pageQuery
     * @return
     */
    TableDataInfo<CustomInviteRecordVO> inviteMemberPageList(InviteMemberParams inviteMemberParams, PageQuery pageQuery);

    /**
     * 用户列表
     * @return
     */
    List<MemberVO> list();

    /**
     * 个人中心 -常用地址列表（分页）
     * @return
     */
    TableDataInfo<CryptoInCommonUseAddressVO> inCommonUseAddressPageList(PageQuery pageQuery);

    /**
     * 新增常用地址
     * @param dto
     * @return
     */
    boolean addInCommonUseAddress(CryptoInCommonUseAddressDO dto);

    /**
     * 常用地址详情
     * @param id
     * @return
     */
    CryptoInCommonUseAddressVO inCommonUseAddressDetail(Long id);

    /**
     * 修改常用地址
     * @param dto
     * @return
     */
    boolean editInCommonUseAddress(CryptoInCommonUseAddressDO dto);

    /**
     * 邀请用户列表
     * @param pageQuery
     * @return
     */
    TableDataInfo<CustomInviteRecordVO> apiInviteMemberPageList(String isEffective,PageQuery pageQuery);

    /**
     * 佣金收益列表（分页）
     * @param kickbackParams
     * @param pageQuery
     * @return
     */
    TableDataInfo<KickbackRecordVO> kickbackPageList(KickbackParams kickbackParams, PageQuery pageQuery);

    /**
     * 佣金提现审核列表（分页）
     * @param kickbackParams
     * @param pageQuery
     * @return
     */
    TableDataInfo<KickbackExtractVO> kickbackExtractApplyPageList(KickbackExtractParams kickbackParams, PageQuery pageQuery);

    /**
     * 佣金提现记录列表（分页）
     * @param kickbackParams
     * @param pageQuery
     * @return
     */
    TableDataInfo<KickbackExtractVO> kickbackExtractPageList(KickbackExtractParams kickbackParams, PageQuery pageQuery);

    /**
     * 佣金提现审核
     * @param dto
     * @return
     */
    boolean kickbackExtractAudit(KickbackExtractDO dto);

    /**
     * 常用地址删除
     * @param id
     */
    void delInCommonUseAddress(Long id);

    /**
     * 修改登录密码
     * @param bo
     */
    void updatePwd(UpdatePwdBO bo);
}
